#ifndef __STINGER_VERTEX_H__
#define __STINGER_VERTEX_H__


int insert_vertex(std::string vertex_name, std::string type, int weight = 1, int inDegree = 0, int outDegree = 0);
stinger_vertex* get_vertex(std::string vertex_name, std::string type);

inline int name_to_phy_id(std::string name);
int phy_id_to_logical_id(int phy_id);
stinger_vertex* get_vertex_by_phy_id(int phy_id);

bool delete_vertex_by_phy_id(int phy_id);
bool delete_vertex_by_name(std::string vertex_name, std::string type);

int update_vertex_by_phy_id(int phy_id, int weight = -1, int inDegree = -1, int outDegree = -1);
int update_vertex_by_name(std::string vertex_name, std::string type, int weight = -1, int inDegree = -1, int outDegree = -1);

int vertex_self_increase_by_name(std::string vertex_name, std::string type, int weight = 0, int inDegree = 0, int outDegree = 0);
int vertex_self_increase_by_phy_id(int phy_id, int weight = 0, int inDegree = 0, int outDegree = 0);

int free_eb_list_by_phy_id(int phy_id);
int free_eb_list_by_name(std::string vertex_name, std::string type);


#endif